#include <my_header.h>
// 首先fork函数会拷贝一个新进程，执行if和else条件语句(输出的顺序不一定)
// 会输出父进程的id(else语句是父进程)，再次输出子进程的id(因为已经拷贝过),
// 再次输出会输出子进程的pid，(pid==0)是子进程 子进程是0
/* Usage: ./2_fork */
int main(int argc, char *argv[]){                                  
    pid_t pid = fork(); // pid_t int类型 拷贝进程得到子进程
    if(pid == 0)    // 0代表子进程
    {
        // 子进程
        printf("i am child;pid = %d\n", getpid());
    }else{ 
        // 父进程
        // 非0代表父进程,非零值代表子进程的PID
        // getpid()获得当前else的pid为父进程
        // pid为fork()之后的pid为子进程的pid
        printf("I am main;pid = %d, child pid = %d\n", 
               getpid(), pid);
        sleep(1);
    }
    return 0;
}

#if 0
此程序是写时复制
内存复制
执行fork()之后 会创建和父进程几乎一致的用户
态地址空间 会共享同一片虚拟内存空间 父子进程都可操作
其中有两个不一样pid 和 ppid
#endif
